using System;
using System.Collections.Generic;

using MvcCms.Data;
using MvcCmsForum.Data;

namespace MvcCmsForum.Service
{
    public interface IForumService
    {
        //Forum Methods
        Forum GetForum(int id);
        Forum GetForum(string path);
        bool CreateForum(Forum forumToCreate);
        bool EditForum(Forum forumToEdit);
        IEnumerable<Forum> ListForums();
        bool DeleteForum(Forum forumToDelete);

        //Post Methods
        DTOAjaxPost GetDTOPost(int id);
        Post GetPost(int id);
        Post GetPost(string path, int forumId);
        bool EditPost(Post postToEdit);
        int CreatePost(Post postToCreate);
        IEnumerable<DTOAjaxPost> ListPosts(int forumId);
        IEnumerable<DTOAjaxPost> ListUserPosts(Guid userId);
        IEnumerable<DTOAjaxPost> ListPosts();
        IEnumerable<DTOAjaxPost> ListReplies(int threadId, int index);
        bool DeletePost(Post postToDelete);

        //Vote Methods
        Vote GetVote(int postId, Guid userId);
        int GetUserVoteTotal(Guid userId);
    }
}